A variety of kinds of digital multimedia computer systems are now available. Multimedia systems typically use digital audio and digital image data, especially digital video. It should be understood that in this context, digital video means a sequence of two-dimensional digital still images without any synchronization or other timing information typically associated with a video signal such as a television signal. These systems generally fall into one or more of three broad categories: capture, authoring, and playback.
Capture involves generating digital media from typically analog media. For example, video signals on a video tape or on film are converted into a sequence of two-dimensional digital still images. These images are typically compressed using known compression systems so as to reduce storage requirements.
Authoring systems, such as the AVID/1 Media Composer, commercially available from Avid Technology, Inc. of Tewksbury, Mass., allow a user to generate multimedia programs, for example by editing source material or by generating information like computerized graphics. Portions of the source material are called clips. For example, multiple takes of a scene in a film could be captured. An authoring system could be used to edit clips from these takes into an appropriate final version of the scene.
Playback systems are used to display a multimedia program to a viewer. The program typically is previously edited by an authoring system using previously captured material. The display medium may be, for example, broadcast television or conversion to video signals to create a video tape or video disk, a computer display, etc. Thus, playback generally involves retrieval and transmission of the digital media from storage to the display location according to the specified program and may involve conversion of the digital media to an analog form. Very often an authoring system includes a form of playback system.
In some industries, all three of these kinds of systems are used in day-to-day operations. For example, in a broadcast or cable television system, media is captured from satellite, cable or another source. A program is then edited from this material. For example, video and audio footage of news events from around the world may be transmitted via satellite and captured by a broadcast station, which then prepares a news program. The final news program is then played back for broadcast. As another example, in the film industry, media may be captured, and then played back by a director to determine whether any more takes of a given scene would be required. Authoring systems are also becoming more commonly used to facilitate the editing process of a film. After a digital version of the film is completed, this version is used to create a final film product.
In facilities where there may be many users of the same multimedia material, using multiple types of multimedia systems, a need has arisen to provide these capabilities in a distributed computing environment which allows real-time access to and viewing of multimedia information. Real-time access signifies data rates which support providing broadcast quality video at a client. That is, real-time access involves the ability to play, cut and paste, view a single frame and provide fast forward (or reverse) access to video information at a server. This also may signify an ability to recover from a worst-case disk access. Generally, data transfer rates of about five (5) megabytes per second (Mbps) are preferable. Real-time audio and video systems also require large amounts of data to be transferred. These transfer rates and amounts should be achieved without loss and with minimal latency.
To this day, no systems are commercially-available to handle adequately the data transfer requirements of such multimedia systems, particularly broadcast quality video. Because such distributed systems are not currently commercially-available, users and television stations or film studios or post-production facilities typically have to different machines in order to perform the various capture, authoring, and playback activities, which is generally undesirable. Alternatively, all of these activities are performed on a single machine.
For other kinds of applications, there are several conventional methods for transferring large amounts of data between a server and a client in a distributed computer system over a network interconnection. In a first method, a server transmits the data, in bulk, directly to a client. Traditional distributed computing systems utilize a widespread industry practice of a disk server system coupled with an in-memory data cache to provide a mechanism that a client may use to read data. The file system of the underlying operating system performs larger than requested disk reads in an attempt to fill the cache with information that the system estimates the client will need next. One problem with this method is that the client has no control over selection of data, or timing of the transfer.
In a second method, the client periodically and unpredictably makes requests for data from the server. One problem with this method is that a delay (latency) is incurred while the server prepares the data for delivery, for example, by reading it from a local disk into system memory. This class of systems will not provide the minimum latency required by a media data pipeline operating in a variable consumption rate environment within a video and audio processing system.
Another problem with current systems is that they have not accounted for resource limitations along the path from the sender to the receiver. That is, when data, such as audio or video media data, is transmitted over a network, a flow control mechanism is required so that the sender does not transmit the data faster than the receiver can accept it. Otherwise, portions of the data packets may be lost in transmission even though the physical interconnect has not failed in any way. This packet loss is normally handled by retransmission, but the real-time requirements of multimedia playback, especially in a broadcast environment, preclude retransmission as a solution.
The Internet protocol, Transmission Control Protocol/Internet Protocol (TCP/IP), is an example of current networking industry practice. TCP/IP is an example of the use of an end-to-end window extension technique. The receiver extends a window to the sender. The sender sends until this window is consumed. The window only refers to the amount of protocol data unit (PDU) buffer memory available to the application. Network interface level buffering is not considered. If the buffers in the network interface are overflowed or congested, PDUs will be lost. TCP/IP was designed to operate in the face of a PDU loss on the interconnect between the sender and the receiver. The use of timeouts and sequence number checking on each message allows the sender and receiver to determine that a PDU or acknowledge message has been lost or corrupted while moving across the network from such a loss. Transmission retry is used to recover. The overhead of the retry and timeouts reduces the possible data transfer rate below that needed to support processing broadcast quality video and audio information.
Another common problem in distributed systems is that the receiver typically experiences significant overhead in identifying a final destination in user-level memory into which data is to be copied from an intermediate system buffer and the network interface. This overhead reduces the possible data transfer rate to levels that make impossible the movement of broadcast quality video and audio media data at sufficient speed.